/****************************************************
 * 创建人：  tanglei  
 * 创建时间: 2022/3/14/13:20
 * 项目名称：junit_test
 * 文件名称: Task.java
 * 文件描述: @Description: 
 *
 * All rights Reserved, Designed By 投资交易团队
 * @Copyright:2016-2022
 *
 ********************************************************/
package com.springboot.thread;

import java.util.concurrent.*;

/**
 * 包名称：  src.multiThread
 * 类名称：Task
 * 类描述：
 * 创建人：  tanglei
 * 创建时间：2022/3/14 13:20
 */
public class Task implements Callable<Integer> {



    @Override
    public Integer call() throws Exception {
        // 模拟计算需要⼀秒
        Thread.sleep(10000);
        return 2;
    }
    public static void main(String args[]){
        // 使⽤
        ExecutorService executor = Executors.newCachedThreadPool();
        Task task = new Task();
        Future<Integer> result = executor.submit(task);
        // 注意调⽤get⽅法会阻塞当前线程，直到得到结果。
        // 所以实际编码中建议使⽤可以设置超时时间的重载get⽅法。
        try {
            System.out.println(result.get(5, TimeUnit.SECONDS));
            System.out.println("线程阻塞！！");
        } catch (TimeoutException e) {
            System.out.println("接口返回，超时等待！！");
            e.printStackTrace();
        }catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

